import App from './App'

// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
import api from './utils/api.js'
import config from './utils/config.js'
import userManager from './utils/user.js'


// 全局挂载 API 和配置
Vue.prototype.$api = api
Vue.prototype.$config = config
Vue.prototype.$user = userManager

// 不需要登录验证的白名单页面
const whiteList = [
  '/pages/login/login', // 登录页
  '/pages/index/index' // 首页
];

// 检查登录状态
const checkLoginStatus = () => {
  // 使用全局用户管理模块判断是否已登录
  const userInfo = userManager.getUserInfo();
  const token = uni.getStorageSync('token');

  return userInfo && token;
};

// 构建重定向URL
const buildRedirectUrl = (originalUrl) => {
  // 将原始URL编码并添加到登录页面的参数中
  return `/pages/login/login?redirect=${encodeURIComponent(originalUrl)}`;
};

// 拦截 navigateTo
// uni.addInterceptor('navigateTo', {
//   invoke(e) {
//     // 获取要跳转的页面路径
//     const url = e.url;
//     // 检查是否在白名单中
//     // const isWhite = whiteList.some(path => url.includes(path));
//     // 修改为精确匹配，并标准化路径
//     const normalizedUrl = url.startsWith('/') ? url : '/' + url; // 确保URL以斜杠开头
//     const isWhite = whiteList.some(path => normalizedUrl === path);
//     // 获取登录状态
//     const isLoggedIn = checkLoginStatus();

//     // 如果未登录且不在白名单中，则跳转到登录页
//     if (!isLoggedIn && !isWhite) {
//       // 存储当前要访问的页面路径，以便登录成功后跳回
//       const loginUrl = buildRedirectUrl(url);
//       uni.navigateTo({
//         url: loginUrl
//       });
//       return false; // 拦截原始跳转
//     }
//     return true; // 继续原始跳转
//   }
// });

// 拦截 switchTab
// uni.addInterceptor('switchTab', {
//   invoke(e) {
//     const isLoggedIn = checkLoginStatus();
//     // const isWhite = whiteList.some(path => e.url.includes(path)); // 修改为精确匹配
//     const normalizedUrl = e.url.startsWith('/') ? e.url : '/' + e.url;
//     const isWhite = whiteList.some(path => normalizedUrl === path);
//     if (!isLoggedIn && !isWhite) {
//       // 存储当前要访问的tabBar页面路径，以便登录成功后跳回
//       const loginUrl = buildRedirectUrl(e.url);
//       uni.navigateTo({
//         url: loginUrl
//       });
//       return false;
//     }
//     return true;
//   }
// });

// 拦截 redirectTo
// uni.addInterceptor('redirectTo', {
//   invoke(e) {
//     // 获取要跳转的页面路径
//     const url = e.url;
//     // 检查是否在白名单中
//     // const isWhite = whiteList.some(path => url.includes(path)); // 修改为精确匹配
//     const normalizedUrl = url.startsWith('/') ? url : '/' + url;
//     const isWhite = whiteList.some(path => normalizedUrl === path);
//     // 获取登录状态
//     const isLoggedIn = checkLoginStatus();

//     // 如果未登录且不在白名单中，则跳转到登录页
//     if (!isLoggedIn && !isWhite) {
//       // 存储当前要访问的页面路径，以便登录成功后跳回
//       const loginUrl = buildRedirectUrl(url);
//       uni.redirectTo({
//         url: loginUrl
//       });
//       return false; // 拦截原始跳转
//     }
//     return true; // 继续原始跳转
//   }
// });

// 拦截 reLaunch
// uni.addInterceptor('reLaunch', {
//   invoke(e) {
//     // 获取要跳转的页面路径
//     const url = e.url;
//     // 检查是否在白名单中
//     // const isWhite = whiteList.some(path => url.includes(path)); // 修改为精确匹配
//     const normalizedUrl = url.startsWith('/') ? url : '/' + url;
//     const isWhite = whiteList.some(path => normalizedUrl === path);
//     // 获取登录状态
//     const isLoggedIn = checkLoginStatus();

//     // 如果未登录且不在白名单中，则跳转到登录页
//     if (!isLoggedIn && !isWhite) {
//       // 存储当前要访问的页面路径，以便登录成功后跳回
//       const loginUrl = buildRedirectUrl(url);
//       uni.reLaunch({
//         url: loginUrl
//       });
//       return false; // 拦截原始跳转
//     }
//     return true; // 继续原始跳转
//   }
// });

Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
  ...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif
